window: Only avoid queueing resizes if the popover position didn't change
authorCarlos Garnacho <carlosg@gnome.org>
Fri, 1 Aug 2014 14:50:59 +0000 (16:50 +0200)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 2 Aug 2014 23:12:12 +0000 (01:12 +0200)
If the same position is requested on a popover, it should at least ensure
the window is realized and raised, even if no resizes are queued on the
content. Otherwise other widgets being mapped might raise the windows over
the popover's if its original position is unchanged.

https://bugzilla.gnome.org/show_bug.cgi?id=734129

gtk/gtkwindow.c

index cf6b81a2381d3ae5a6cb5deb65f23fa27e58c3b5..e7b336b201c90b465f8482846f0c5c0edd84f1fa 100644 (file)
@@ -11489,6 +11489,7 @@ _gtk_window_set_popover_position (GtkWindow                   *window,
                                   GtkPositionType              pos,
                                   const cairo_rectangle_int_t *rect)
 {
+  gboolean need_resize = TRUE;
   GtkWindowPopover *data;
 
   g_return_if_fail (GTK_IS_WINDOW (window));
@@ -11507,7 +11508,7 @@ _gtk_window_set_popover_position (GtkWindow                   *window,
     {
       if (data->pos == pos &&
           memcmp (&data->rect, rect, sizeof (cairo_rectangle_int_t)) == 0)
-        return;
+        need_resize = FALSE;
     }
 
   data->rect = *rect;
@@ -11524,7 +11525,8 @@ _gtk_window_set_popover_position (GtkWindow                   *window,
         gdk_window_raise (data->window);
     }
 
-  gtk_widget_queue_resize (popover);
+  if (need_resize)
+    gtk_widget_queue_resize (popover);
 }
 
 void